// 递归深拷贝
function copy(origin, target) {
    if (origin instanceof Array) {
        // 数组
        target = []
        arrCopy(origin, target)
        function arrCopy(origin, target) {
            for (let key in origin) {
                if (typeof item === 'object') {
                    // 是对象或者数组
                    target.push(item instanceof Array ? [] : {})
                    arrCopy(item, origin[key])
                } else {
                    target.push(item)
                }
                if (key === origin.length - 1) {
                    // 遍历完成
                    origin.push(target)
                }
            }        
        }
        return target
    } else if (origin instanceof Object) {
        // 对象
        target = {}
    } else {
        // 非对象 数组，直接赋值返回
        target = origin
        return target
    }




    
}

// const obj = {
//     a: 1,
//     b: 'b',
//     c: [1, 2, 3, 4],
//     d: {
//         d1: '1',
//         d2: {
//             d3: {
//                 d4: 123
//             }
//         }
//     }
// }
const obj = [1, 2, 3, 'asd', {
    a: 1,
    b: '2',
    c: [1, 2]
}]

// const obj = '1'
// const obj = 123

let copyVar = null
copyVar = copy(obj, copyVar)

console.log(copyVar)